package com.swf.seed.spring.resource;

import java.net.MalformedURLException;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.core.io.FileSystemResource;

/**
 * ClassName: FileSystemResourceTest <br/>
 * Function: TODO ADD FUNCTION. <br/>
 * Reason: TODO ADD REASON(可选). <br/>
 * date: 2014-7-20 下午3:13:50 <br/>
 *
 * @author shenwf10476
 * @version 
 * @since JDK 1.6
 * 与前两种 Resource 作资源访问的区别在于：资源字符串确定的资源，位于本地文件系统内 ，而且无须使用任何前缀。
FileSystemResource 实例可使用 FileSystemResource 构造器显式地创建。但更多的时候它都是隐式创建的，执行 Spring 的某个方法时，该方法接受一个代表资源路径的字符串参数，当 Spring 识别该字符串参数中包含 file: 前缀后，系统将会自动创建 FileSystemResource 对象。
 */
public class FileSystemResourceTest {
	public static void main(String[] args) throws MalformedURLException, DocumentException {
		 // 创建一个 Resource 对象，指定从文件系统里读取资源
		FileSystemResource ur = new FileSystemResource("filebook.xml");
		 // 获取该资源的简单信息
		 System.out.println(ur.getFilename()); 
		 System.out.println(ur.getDescription()); 
		 System.out.println(ur.getFile().getAbsolutePath()); 
		 // 创建 Dom4j 的解析器
		SAXReader reader = new SAXReader(); 
		 Document doc = reader.read(ur.getFile()); 
		 // 获取根元素
		 Element el = doc.getRootElement(); 
		 System.out.println(el.asXML());
		 List<Element> l = el.elements();
		 for (Element e:l){
			 System.out.println(e.asXML());
		 }
	}
}
